1. Field of the Invention
This invention relates to computing system planning and optimization, and more particularly relates to enterprise application planning and optimization.
2. Description of the Related Art
Enterprise application software is a computer program or collection of computer programs designed to consolidate and process information for an enterprise. Some common examples of enterprise application software are enterprise resource planning systems (ERP), customer relationship management systems (CRM), and enterprise application integration systems (EAI). Many enterprise application systems are custom built.
The performance of an enterprise application is critical because delays in one aspect can affect other aspects of the enterprise. However, the task of projecting and optimizing performance for an enterprise application is very complicated as the enterprise application often must handle many different types of workloads, and different types of workloads may have different optimization goals. The different types of workloads share the same hardware and operating system resources, and in some cases they share the same software components within an enterprise application.
Some of the possible workload types are synchronous and asynchronous, call-triggered, event-triggered, and batch-triggered. One set of goals may be to minimize response time for call-triggered workloads, and to prevent processor over-utilization for batch-triggered workloads. Synchronous and asynchronous workloads are general categories, and the other workload types will be either synchronous or asynchronous. A synchronous workload consists of jobs such that each job has a request and a reply message. An example of a synchronous job might be a request from a company web site. An asynchronous workload consists of jobs with one-way communication or processing. An example of an asynchronous job might be a record of the daily loading of sales orders from CRM into an accounting system.
Call-triggered workloads, which are usually synchronous, are sent by a requesting program or device, and the requestor must know how to compile the request message, how to send the request, where to expect the request response, and how to interpret the response once it arrives. For example, a math program may have a shared function on the server, and whenever the program needs the function, it configures a request, calls the server, awaits the returned answer, and interprets the answer.
Event-triggered workloads, which are usually asynchronous, have a different characteristic. The occurrence of events and the processing of events usually happen independently. An even may occur in one system but is needed in another system. One or more programs are responsible for detecting, fetching, and transporting these events from the system where the events occur to the system where the events are needed. For example, a purchase order arriving from a trading partner via electronic data interchange (EDI) may be an event-triggered job that needs to be sent from the EDI inbox to the order processing system.
Batch-triggered workloads are scheduled workloads where all the jobs of the entire workload arrive at approximately the same moment. For example, refreshing all product information of a web store from the catalog system might be a batch-triggered workload where all products arrive at the web store at approximately the same time. Batch-triggered jobs are usually asynchronous.
The current methods of handling these complexities involve using experience with specific systems, applying an iterative trial-and-error optimization, making educated guesses at optimization parameters, and over-designing systems to ensure that enough processing capability is available for the application. This is because there is not yet a systematic understanding of the input variables that affect enterprise application system workload optimization, and the methodology to optimize these systems does not exist. The current state of the art leaves enterprise application systems vulnerable to system outages, slow response, and/or resource under-utilization.
From the foregoing discussion, it should be apparent that a need exists for an apparatus, system, and method to model enterprise application system workloads, to project resource utilization for such systems, and to determine optimization parameters for such systems. Beneficially, such an apparatus, system, and method would also allow implementation of the optimized parameters.